/*
 * Copyright 2011 myTDev.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.mytdev.commons.util;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.io.File;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.net.InetAddress;
import java.net.URL;
import java.text.DateFormat;
import java.util.Locale;
import java.util.regex.Pattern;

/**
 *
 * @author Yann D'Isanto
 */
public interface PropertiesAccessor {

    String get(String key);
    
    String get(Enum<?> key);

    <T> T get(String key, Class<T> type) throws IllegalArgumentException;
    
    <T> T get(Enum<?> key, Class<T> type) throws IllegalArgumentException;

    BigDecimal getBigDecimal(Enum<?> key);

    BigDecimal getBigDecimal(String key);

    BigInteger getBigInteger(Enum<?> key);
    
    BigInteger getBigInteger(String key);

    boolean getBoolean(Enum<?> key);

    boolean getBoolean(String key);

    byte getByte(Enum<?> key);

    byte getByte(String key);

    char getChar(Enum<?> key);

    char getChar(String key);

    Color getColor(Enum<?> key);

    Color getColor(String key);

    DateFormat getDateFormat(Enum<?> key);

    DateFormat getDateFormat(String key);

    Dimension getDimension(Enum<?> key);

    Dimension getDimension(String key);

    double getDouble(Enum<?> key);

    double getDouble(String key);

    File getFile(Enum<?> key);

    File getFile(String key);

    float getFloat(Enum<?> key);

    float getFloat(String key);

    Font getFont(Enum<?> key);

    Font getFont(String key);

    InetAddress getInetAddress(Enum<?> key);

    InetAddress getInetAddress(String key);

    int getInt(Enum<?> key);

    int getInt(String key);

    Locale getLocale(Enum<?> key);

    Locale getLocale(String key);

    long getLong(Enum<?> key);

    long getLong(String key);

    Pattern getPattern(Enum<?> key);

    Pattern getPattern(String key);

    short getShort(Enum<?> key);

    short getShort(String key);

    URL getURL(Enum<?> key);

    URL getURL(String key);
}
